/**
 *
 * 数据和dom之间的相互操作
 * @namespace dataMod
 * @mixin
 * @type {Object}
 */
var dataMod = {
    /**
     * 根据传递进来的elem获取或插入数据
     *
     * @param  {Element} elem
     * @param  {String} key
     * @param  {*=} value
     */
    data: function(elem, key, value) {
        var isObj = getType(key) === 'object'

        if (arguments.length === 2 && !isObj)
            return (elem[$jcData] || UniObj)[key];

        if (!elem[$jcData])
            elem[$jcData] = {};
        if (isObj) {
            var k;
            for (k in key) {
                if (key.hasOwnProperty(k)) {
                    elem[$jcData][k] = key[k]
                }
            }
        } else {
            elem[$jcData][key] = value;
        }
    },
    /**
     * 根据key判定该elem下是否存在数据
     *
     * @param  {Element}  elem
     * @param  {string}  key
     * @return {Boolean}
     */
    hasData: function(elem, key) {
        return key in (elem[$jcData] || UniObj);
    },
    /**
     * 删除数据
     * @param  {Element} elem
     * @param  {String} key
     */
    removeData: function(elem, key) {
        if (this.hasData(elem, key))
            delete elem[$jcData][key];
    }
}